When rewriting data, the memory characteristics of the flash memory make it impossible to directly overwrite data into a physical area in which the data is being stored originally. When performing a data rewrite, it is necessary to rewrite the data after a delete process has been executed in a unit called a block, which is the flash memory delete unit. There exists an upper limit in the deletion times of each block. There is high possibility that the data can not be stored into the block whose deletion times are more than this upper limit.
For this reason, when adopting a system that fixedly allocates a data-storage address to each block of a flash memory, the rewrite frequency will normally differ for each address, thereby resulting in variations in the number of deletions per block. Consequently, in a case where the number of deletions for a specific block exceeds the limit, it becomes impossible to store allocated address data in this block. In order to solve for this problem, a technology called wear leveling is known as a technique for reducing this variation (for example, Patent Literature 1). The basic thinking behind wear leveling is to reduce the imbalance of the number of deletions of a real block by providing, as an externally presented address layer, a logical address layer that is separate from the physical address and changing the logical address allocated to the physical address as needed, for example, allocating a address with a small number of deletions to a frequently accessed logical address. Even in a case where the physical address changes, the logical address remains the same, thereby enabling data to be accessed from the outside via the same address, making it possible to maintain good usability.
Next, technology for reducing the capacity of stored data will be discussed. Technology for reducing the capacity of data stored in a storage system has been attracting attention in recent years. One typical such technology is capacity virtualization technology. Capacity virtualization is technology for presenting to the host side a virtual capacity that is larger than a storage system's physical capacity. This technology makes good use of a characteristic feature whereby the amount of data, which is actually stored in the capacity of a user-defined user volume (the storage device seen by the user) in a case where the user is actually using the storage, does not readily attain the defined capacity of this volume. That is, whereas a defined physical capacity is secured when a volume is defined in a case where capacity virtualization technology is not used. On the other hand, in a case where capacity virtualization technology is applied, capacity is first secured when data is actually stored in the storage system. In accordance with this, the ability to reduce the capacity of the stored data makes it possible to enhance usability, and, in addition, the user may simply define a value with plenty of room to spare instead of having to strictly define the volume capacity. In this technology, the physical storage area secured at a data write is called a page. In general, the size of the page is extremely diverse, but in the present invention it is supposed that the size of the page is larger than the size of the block, which is the flash memory delete unit. By contrast, in a flash memory, whereas the delete unit is generally the block as mentioned above, a read/write unit inside the block is called a page. Naturally, the size of the block in the flash memory is larger than the size of the page. However, in the present invention, the term page will refer to a page in the capacity virtualization technology. Further, to reiterate, the size of the page in the present invention shall be larger than the size of the flash memory block.
However, the above-mentioned capacity virtualization technology is not necessarily a required condition for the storage system of the present invention. On the other hand, technology for transferring a page between storage devices (typically, HDD (Hard Disk Drives)) in page units to realize enhanced performance in a storage system having capacity virtualization technology is known (Patent Literature 2). Furthermore, a technology for transferring a page between storage devices having different price-performance ratios for enhancing the price-performance ratio is also known. Prior to storing user data in a HDD, a specific pattern, for example, all 0s, is normally used to format the HDD. A technology in which the storage system detects this specific pattern written by the host at this time, and frees up an already allocated page is also known (Patent Literature 3).